#include "mycoin.h"
#include <QDebug>


MyCoin::MyCoin(QString btnImg)
{

    QPixmap pixmap;
    bool ret = pixmap.load(btnImg);
    if(!ret)
    {
        qDebug() << btnImg << "加载图片失败!";
        return;
    }

    //设置金币的属性
    this->setFixedSize( pixmap.width(), pixmap.height() );
    this->setStyleSheet("QPushButton{border:0px;}");
    this->setIcon(pixmap);
    this->setIconSize(QSize(pixmap.width(),pixmap.height()));

    //初始化定时器
    timer1 = new QTimer(this);
    timer2 = new QTimer(this);

    //监听正面翻转的信号槽
    connect(timer1,&QTimer::timeout,[=](){
        QPixmap pixmap;
        QString str = QString(":/res/Coin000%1.png").arg(this->min++);//为后面的翻转特效做准备
        pixmap.load(str);
        this->setFixedSize(pixmap.width(),pixmap.height() );
        this->setStyleSheet("QPushButton{border:0px;}");
        this->setIcon(pixmap);
        this->setIconSize(QSize(pixmap.width(),pixmap.height()));
        if(this->min > this->max) //如果大于最大值，重置最小值，并停止定时器（翻转完毕，重置）
        {
            this->min = 1;
            isAnimation = false;//翻转动画结束
            timer1->stop();
        }
    });

    connect(timer2,&QTimer::timeout,[=](){
        QPixmap pixmap;
        QString str = QString(":/res/Coin000%1.png").arg((this->max)-- );
        pixmap.load(str);
        this->setFixedSize(pixmap.width(),pixmap.height() );
        this->setStyleSheet("QPushButton{border:0px;}");
        this->setIcon(pixmap);
        this->setIconSize(QSize(pixmap.width(),pixmap.height()));
        if(this->max < this->min) //如果小于最小值，重置最大值，并停止定时器（翻转完毕，重置）
        {
            this->max = 8;
            isAnimation = false;//翻转动画结束
            timer2->stop();
        }
    });

}
//ban事件
void MyCoin::mousePressEvent(QMouseEvent *e)
{
    if(this->isAnimation || this->isWin)//在做动画或胜利 -》啥也不做，等原程序继续做（将e事件拦截了）
    {
        return;
    }
    else//没有做动画 -》可以执行鼠标事件
    {
        return QPushButton::mousePressEvent(e);
    }
}

//改变正反面
void MyCoin::changeFlag()
{
    if(this->flag) //如果是正面-》反
    {
        timer1->start(30);
        isAnimation = true;//开始翻转动画
        this->flag = false;
    }
    else //反面执行下列代码-》正
    {
        timer2->start(30);
        isAnimation = true;//开始翻转动画
        this->flag = true;
    }

}



